﻿Imports DTO
Imports System.Data.SqlClient

Public Class UsuarioDAL

#Region "Métodos"
    Function Consultar(usuario As UsuarioDTO) As UsuarioDTO
        Dim reader As SqlDataReader
        Dim strSql As String
        Dim objUsuario As New UsuarioDTO

        Try
            Using conn As New SqlConnection(My.Settings.Conexao)
                strSql = "SELECT Usuario, Senha, Tipo FROM TB_USUARIO WHERE Usuario=@Usuario and Senha=@Senha and Ativo=1"
                Using cmd As New SqlCommand(strSql, conn)
                    cmd.Parameters.Add("@Usuario", SqlDbType.VarChar, 100).Value = usuario.pUsuario
                    cmd.Parameters.Add("@Senha", SqlDbType.VarChar, 8).Value = usuario.pSenha


                    conn.Open()
                    reader = cmd.ExecuteReader

                    'Se ele encontrou algum registro, preenche o objeto
                    If reader.Read() Then
                        objUsuario.pUsuario = reader.Item("Usuario")
                        objUsuario.pSenha = reader.Item("Senha")
                        objUsuario.pTipo = reader.Item("Tipo")

                        Return objUsuario
                    End If

                    reader.Close()

                End Using
            End Using
        Catch ex As Exception
            Throw ex
        End Try

        objUsuario = Nothing

        Return objUsuario
    End Function

    Sub Incluir(usuario As UsuarioDTO)
        Dim sb As New System.Text.StringBuilder 'Armazena a string do SQL
        Using conn As New SqlConnection(My.Settings.Conexao)
            sb.Append("EXEC PR_INSERIR_USUARIO ")
            sb.Append(" @USUARIO, @SENHA, @TIPOUSUARIO")

            Using cmd As New SqlCommand(sb.ToString, conn)
                Try

                    cmd.Parameters.Add("@USUARIO", SqlDbType.VarChar, 100).Value = usuario.pUsuario
                    cmd.Parameters.Add("@SENHA", SqlDbType.VarChar, 8).Value = usuario.pSenha
                    cmd.Parameters.Add("@TIPOUSUARIO", SqlDbType.Char, 3).Value = usuario.pTipo

                    conn.Open() 'Abre a conexão
                    cmd.ExecuteNonQuery() 'Executa o SQL
                Catch ex As SqlException 'Exceção de SQL
                    'Verifica se o erro é de chave duplicada
                    If ex.Number = 2627 Then
                        'Se for cria uma exceção personalizada "CPF cadastrado"
                        Throw New Exception("Usuário já cadastrado")
                    Else 'retorna a exceção gerada
                        Throw ex
                    End If
                Catch ex As Exception 'Exceção genérica
                    'Verica se a conexão foi instanciada
                    Throw ex
                End Try
            End Using
        End Using
    End Sub

#End Region

End Class
